package com.sakiko.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {

    /* todo:
     *  用户登陆 /user/login
     *  用户注册 /user/register
     *  查询用户 /user
     */
    /*
       前端 -> ds -> handlerMapping
               |
               handlerAdapter -> handler
     * 解释:
     *  detail 1: @RequestMapping注解作用是 handler方法注册到 handlerMapping中,供 dispatcherServlet查找
     *  detail 2: @RequestMapping("/user/login") 可以省略 前后的 "/"
     *  detail 3: 依然可以配置多个地址和模糊地址
                String[] value() default {};
                模糊地址 /user/* : /user一层下的任意地址
                       /user/** : /user任意层下的任意地址
     *  detail 4: @RequestMapping注解可以加在类、方法上
            类上不是必须！可以提取前缀的最大公共路径
             方法上是必须的！添加剩余部分，如果和提取路径一致，也需要添加注解，只是不需要路径
     *  detail 5: 请求方式限制
                http -> get | post -> login() register -> 一般用 post 隐藏提交参数
                默认情况下不会限制 default{} 限制: @RequestMapping(method = {RequestMethod.GET, RequestMethod.POST})
                没有按照指定的方法进行请求 405
     * detail 6: 如果有请求方式限制，且是一种限制建议使用如下注解
                @PostMapping @GetMapping @PutMapping @DeleteMapping @Target({ElementType.METHOD})
     */
    @RequestMapping(value = "login", method = RequestMethod.POST)
    public String login() {
        System.out.println("UserController.login");
        return "login success!!!";
    }

//    @RequestMapping(value = "register", method = RequestMethod.POST)
    @PostMapping(value = "register")
    public String register() {
        System.out.println("UserController.login");
        return "register success!!!";
    }

    @RequestMapping(method = {RequestMethod.GET, RequestMethod.POST})
    public String list() {
        System.out.println("UserController.login");
        return "list success!!!";
    }
    // https://docs.qq.com/s/HwldRfgQ-8kLFaScZdlEdq
    // 参数类型介绍:
    // 1、接收 param参数  【key=value】 eg: ?username=root
    // 2、路径传参  【path/参数/参数】 eg: docs.qq.com/s/HwldRfgQ-8kLFaScZdlEdq
    // 3、接收 Json参数
}
